{ "cells": [ { "cell_type": "markdown", "id": "57a92274", "metadata": {}, "source": [ "# Solar and Wind Curtailment\n", "\n", "Renewables like wind and solar regularly produce energy in excess of demand. In order to keep supply and demand balanced on the grid, the result is \"curtailment\", or purposefully reducing output.\n", "\n", "In this notebook, we'll walk through accessing the curtailment data for CAISO" ] }, { "cell_type": "code", "execution_count": 1, "id": "3599dfce", "metadata": {}, "outputs": [], "source": [ "import gridstatus\n", "import pandas as pd\n", "import plotly.express as px\n", "import numpy as np\n", "from plotly.subplots import make_subplots\n", "import plotly.graph_objects as go" ] }, { "cell_type": "code", "execution_count": 2, "id": "4304ea16", "metadata": {}, "outputs": [], "source": [ "iso = gridstatus.CAISO()" ] }, { "cell_type": "markdown", "id": "a23c3119", "metadata": {}, "source": [ "## Get Curtailment Data\n", "\n", "First, we will query for curtailment data. CAISO publishes curtailment data starting on June 30, 2016. We use the `save_to` parameter to save the data locally, so it is easier to reload later." ] }, { "cell_type": "code", "execution_count": null, "id": "fc53269c", "metadata": {}, "outputs": [], "source": [ "df = iso.get_curtailment(start=\"Jan 1, 2020\", end=\"Nov 30, 2022\", save_to=\"curtailment/\")" ] }, { "cell_type": "markdown", "id": "bd4b87c4", "metadata": {}, "source": [ "we can easily reload the data in the curtailment folder like this. By default it loads with UTC timezone unless we specify otherwise." ] }, { "cell_type": "code", "execution_count": 3, "id": "3a92c4c4", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1052/1052 [00:00<00:00, 1347.85it/s]\n" ] }, { "data": { "text/html": [ "
| \n", " | Time | \n", "Curtailment Type | \n", "Curtailment Reason | \n", "Fuel Type | \n", "Curtailment (MWh) | \n", "Curtailment (MW) | \n", "
|---|---|---|---|---|---|---|
| 0 | \n", "2020-01-01 08:00:00-08:00 | \n", "Economic | \n", "Local | \n", "Solar | \n", "0.0 | \n", "NaN | \n", "
| 1 | \n", "2020-01-01 08:00:00-08:00 | \n", "Economic | \n", "System | \n", "Solar | \n", "27.0 | \n", "153.0 | \n", "
| 2 | \n", "2020-01-01 08:00:00-08:00 | \n", "Economic | \n", "System | \n", "Wind | \n", "6.0 | \n", "40.0 | \n", "
| 3 | \n", "2020-01-01 09:00:00-08:00 | \n", "Economic | \n", "Local | \n", "Solar | \n", "78.0 | \n", "524.0 | \n", "
| 4 | \n", "2020-01-01 09:00:00-08:00 | \n", "Economic | \n", "Local | \n", "Wind | \n", "7.0 | \n", "46.0 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 28818 | \n", "2022-11-17 13:00:00-08:00 | \n", "Economic | \n", "Local | \n", "Solar | \n", "143.0 | \n", "273.0 | \n", "
| 28819 | \n", "2022-11-17 13:00:00-08:00 | \n", "Economic | \n", "System | \n", "Solar | \n", "0.0 | \n", "NaN | \n", "
| 28820 | \n", "2022-11-17 14:00:00-08:00 | \n", "Economic | \n", "Local | \n", "Solar | \n", "18.0 | \n", "41.0 | \n", "
| 28821 | \n", "2022-11-17 15:00:00-08:00 | \n", "Economic | \n", "System | \n", "Solar | \n", "1.0 | \n", "9.0 | \n", "
| 28822 | \n", "2022-11-17 16:00:00-08:00 | \n", "Economic | \n", "System | \n", "Solar | \n", "1.0 | \n", "3.0 | \n", "
28823 rows × 6 columns
\n", "| \n", " | Local Solar Curtailment (MWh) | \n", "Local Wind Curtailment (MWh) | \n", "System Solar Curtailment (MWh) | \n", "System Wind Curtailment (MWh) | \n", "Total Solar Curtailment (MWh) | \n", "Total Wind Curtailment (MWh) | \n", "Total Curtailment (MWh) | \n", "
|---|---|---|---|---|---|---|---|
| Time | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
| 2020-01-01 08:00:00-08:00 | \n", "0.0 | \n", "0.0 | \n", "27.0 | \n", "6.0 | \n", "27.0 | \n", "6.0 | \n", "33.0 | \n", "
| 2020-01-01 09:00:00-08:00 | \n", "78.0 | \n", "7.0 | \n", "138.0 | \n", "13.0 | \n", "216.0 | \n", "20.0 | \n", "236.0 | \n", "
| 2020-01-01 10:00:00-08:00 | \n", "12.0 | \n", "0.0 | \n", "917.0 | \n", "43.0 | \n", "929.0 | \n", "43.0 | \n", "972.0 | \n", "
| 2020-01-01 11:00:00-08:00 | \n", "19.0 | \n", "0.0 | \n", "1229.0 | \n", "44.0 | \n", "1248.0 | \n", "44.0 | \n", "1292.0 | \n", "
| 2020-01-01 12:00:00-08:00 | \n", "216.0 | \n", "25.0 | \n", "1194.0 | \n", "131.0 | \n", "1410.0 | \n", "156.0 | \n", "1566.0 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 2022-11-17 12:00:00-08:00 | \n", "95.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "95.0 | \n", "0.0 | \n", "95.0 | \n", "
| 2022-11-17 13:00:00-08:00 | \n", "143.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "143.0 | \n", "0.0 | \n", "143.0 | \n", "
| 2022-11-17 14:00:00-08:00 | \n", "18.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "18.0 | \n", "0.0 | \n", "18.0 | \n", "
| 2022-11-17 15:00:00-08:00 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "1.0 | \n", "
| 2022-11-17 16:00:00-08:00 | \n", "0.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "1.0 | \n", "0.0 | \n", "1.0 | \n", "
25233 rows × 7 columns
\n", "